package com.maimao.model.kill.input;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.apache.tomcat.jni.Local;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 后台新增排期的模板 目前只支持单品秒杀
 *
 * @author MaoLin Wang
 * @date 2021/4/7 10:07 下午
 */
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ScheduleTemplate implements Serializable {

    private static final long serialVersionUID = 1870556927191655788L;

    /**
     * 活动id
     */
    @NotNull(message = "请选中活动")
    private Integer activityId;

    /**
     * 排期每日开始时间 yyyy-MM-dd HH
     */
    @NotNull(message = "请选择排期每日开始时间")
    @Min(value = 0, message = "开始时间应在0点到23点之内")
    @Max(value = 23, message = "开始时间应在0点到23点之内")
    private Integer dayStartHour;

    /**
     * 排期每日结束时间 yyyy-MM-dd HH
     */
    @NotNull(message = "请选择排期每日结束时间")
    @Min(value = 1, message = "结束时间应在1点到24点之内")
    @Max(value = 24, message = "结束时间应在1点到24点之内")
    private Integer dayEndHour;

    /**
     * 排期开始日期 yyyy-MM-dd
     */
    @NotNull(message = "请选择排期开始日期")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private LocalDate startTime;

    /**
     * 周期 单品秒杀：单位为hour，cycle=2，则排期时间(假如一整天)为：0-2点，2-4点，4-6点 ....
     */
    @NotNull(message = "请选择排期周期")
    @Min(value = 1, message = "周期最少为1")
    private Integer cycle;

    /**
     * 天数 单品秒杀：从startTime开始的day天，即endTime=startTime+(day-1)
     */
    @NotNull(message = "请选择排期天数")
    @Min(value = 1, message = "排期天数最少为一天")
    private Integer day;

    /**
     * 每期坑数
     */
    @NotNull(message = "请选择每期位置数")
    @Min(value = 1, message = "每期位置数不能小于1")
    private Integer count;

    @Override
    public String toString() {
        return "ScheduleTemplate{" +
                "activityId=" + activityId +
                ", dayStartHour=" + dayStartHour +
                ", dayEndHour=" + dayEndHour +
                ", startTime=" + startTime +
                ", cycle=" + cycle +
                ", day=" + day +
                '}';
    }
}
